Jump To:
Technical Q&As
Apple provides opportunities for developers to create hardware devices, including memory, mass storage, PCI, CardBus, USB, FireWire, and wireless solutions. Developer notes listed in the Apple Hardware topic provide relevant connector, cabling, and pin-out information, physical dimensions, electrical and thermal requirements, and pointers and references to standards.

Hardware Resources
A guided introduction and learning path to developing hardware and device-level software for Apple's computers and servers.  
Document Descriptions
On Off
Display

Sort by
Title
Sorted by
Topic
Sort by
Date
Sample code for allocating an amount of dictionary space (HTML)
HW71: Discusses the allocation and the setting of memory for Dictionary space in Open Firmware.
Mac OS X Server 1999-10-11
What are configuration variables in Open Firmware? (HTML) ()
HW38: Defines the configuration variables in Open Firmware.
Mac OS X Server 1999-02-15
What is the "dump" word and how do I use it? (HTML)
HW68: Describes the function of the Open Firmware word "dump" and how it can be used.
Mac OS X Server 1999-10-11
What numeric base is the default for the Open Firmware user interface? (HTML)
HW65: Describes how the default numeric base used by the Open Firmware user interface is hexadecimal.
Mac OS X Server 1999-10-11
Why did the name of the PCI bridge change? (HTML) ()
HW59: Explains the name change of the PCI bridge to the generic name "pci" in Open Firmware.
Mac OS X Server 1999-03-29
Adding dependencies with kmodload (HTML)
QA1097: Illustrates how to specify dependencies when using kmodload.
Mass Storage Devices 2001-12-05
ANSI SCSI Standards (HTML)
Deprecated - DV03: Describes past Macintosh systems that did not fully support the ANSI SCSI-1 standard.
Mass Storage Devices 1995-07-01
Are interrupts enabled while Open Firmware is running? (HTML) ()
HW44: Explains that interrupts are disabled when Open Firmware is running.
Mass Storage Devices 1999-02-15
Booting after invoking the Open Firmware user interface (HTML) ()
HW48: Tells how to boot a system after entering the Open Firmware user interface.
Mass Storage Devices 1999-02-15
Detecting a CD-ROM (HTML) ()
DV18: Demonstrates CD-ROM drive detection.
Mass Storage Devices 1997-01-31
Determining Open Firmware configuration variables (HTML) ()
HW56: Discusses how to determine the Open Firmware variables on a system.
Mass Storage Devices 1999-03-29
The dreaded "incompatible flag -framework" error (HTML)
QA1096: Explains how to eliminate the incompatible flag -framework error in Project Builder.
Mass Storage Devices 2001-12-05
Ejecting the Volume on Which Your Program Resides (HTML) ()
FL09: Suggests different solutions regarding ejecting a disk on which an application resides.
Mass Storage Devices 1998-07-06
Expansion ROM device properties (HTML) ()
HW50: Describes the Open Firmware properties that should be included in a boot device's expansion ROM.
Mass Storage Devices 1999-03-29
Generating an NMI Without a Programmer's Switch (HTML) ()
QA1264: Explains how to generate a non-maskable interrupt (NMI) on CPUs without programmer's switches.
Mass Storage Devices 2004-04-26
Getting started with Forth (HTML) ()
HW53: Describes where FCode driver developers can get information about the Forth programming language.
Mass Storage Devices 1999-03-29
Installing an I/O Kit KEXT Without Rebooting (HTML)
QA1319: Describes the state of the art of installing I/O Kit kernel extensions (KEXTs) without requiring a restart.
Mass Storage Devices 2003-10-28
IODeviceTree & the IORegistry (HTML) ()
QA1120: Describes the IODeviceTree plane in the Mac OS X IORegistry.
Mass Storage Devices 2002-02-13
IOKit Framework Headers (HTML) ()
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
Mass Storage Devices 2002-01-15
Is the Open Firmware device tree object oriented? (HTML)
HW80: Discusses the object-oriented attributes of the Open Firmware device tree.
Mass Storage Devices 1999-11-15
Legacy Devices (HTML)
HW84: Discusses why legacy devices with hard-wired I/O addresses may not work properly with Open Firmware.
Mass Storage Devices 2000-03-20
Open Firmware and the devalias node (HTML)
HW95: Describes why the contents of the Open Firmware devalias node varies between Macintosh models.
Mass Storage Devices 2000-09-05
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
Mass Storage Devices 2000-09-05
PCI Type 1 Cycles (HTML)
HW26: Describes the circumstances when the PowerMac generates a Configuration Type 1 command.
Mass Storage Devices 1995-07-15
Retain Counts of io_object_t Objects in IOKit.framework (HTML) ()
QA1195: Distinguishes between the retain counts of an I/O Kit kernel object and its io_object_t user space proxy.
Mass Storage Devices 2002-09-04
Sample code for allocating an amount of dictionary space (HTML)
HW71: Discusses the allocation and the setting of memory for Dictionary space in Open Firmware.
Mass Storage Devices 1999-10-11
SCSI ID from vRefNum (HTML) ()
DV29: Legacy Mac OS technique for identifying the ID of a SCSI Parallel device containing a specified disk volume.
Mass Storage Devices 1997-05-23
A SCSI little secret (HTML)
HW81: Details what to expect when accessing the motherboard SCSI bus on the Blue & White G3.
Mass Storage Devices 1999-12-20
SCSIAction and IOSCSIUserClient on Mac OS X 10.2 (HTML) ()
QA1201: Describes migrating to a new API for SCSI Parallel devices starting with Mac OS X 10.2.
Mass Storage Devices 2002-09-13
SDRAM Problems With Self-Powered USB Devices (HTML) ()
HW82: Alerts that non-compliant, self-powered USB devices plugged into a G4, can cause problems with low-voltage-sensitive SDRAM .
Mass Storage Devices 2003-08-21
Sending SCSI commands to storage devices (HTML) ()
QA1179: Explains that Mac OS X does not implement SCSI pass-through for many mass storage devices.
Mass Storage Devices 2002-08-06
What are configuration variables in Open Firmware? (HTML) ()
HW38: Defines the configuration variables in Open Firmware.
Mass Storage Devices 1999-02-15
What are snag keys in Open Firmware? (HTML) ()
HW35: Explains Open Firmware snag keys, including examples of their function.
Mass Storage Devices 1999-02-15
What is the "dump" word and how do I use it? (HTML)
HW68: Describes the function of the Open Firmware word "dump" and how it can be used.
Mass Storage Devices 1999-10-11
What numeric base is the default for the Open Firmware user interface? (HTML)
HW65: Describes how the default numeric base used by the Open Firmware user interface is hexadecimal.
Mass Storage Devices 1999-10-11
Why did the name of the PCI bridge change? (HTML) ()
HW59: Explains the name change of the PCI bridge to the generic name "pci" in Open Firmware.
Mass Storage Devices 1999-03-29
Are interrupts enabled while Open Firmware is running? (HTML) ()
HW44: Explains that interrupts are disabled when Open Firmware is running.
Music & Audio 1999-02-15
Available FireWire Isochronous Bandwidth (HTML)
QA1356: Discusses attempting to "pre-flight" an isochronous bandwidth allocation request by reading the currently available bandwidth.
Music & Audio 2004-07-07
Determining Open Firmware configuration variables (HTML) ()
HW56: Discusses how to determine the Open Firmware variables on a system.
Music & Audio 1999-03-29
Expansion ROM device properties (HTML) ()
HW50: Describes the Open Firmware properties that should be included in a boot device's expansion ROM.
Music & Audio 1999-03-29
Generating an NMI Without a Programmer's Switch (HTML) ()
QA1264: Explains how to generate a non-maskable interrupt (NMI) on CPUs without programmer's switches.
Music & Audio 2004-04-26
Getting started with Forth (HTML) ()
HW53: Describes where FCode driver developers can get information about the Forth programming language.
Music & Audio 1999-03-29
Installing an I/O Kit KEXT Without Rebooting (HTML)
QA1319: Describes the state of the art of installing I/O Kit kernel extensions (KEXTs) without requiring a restart.
Music & Audio 2003-10-28
IODeviceTree & the IORegistry (HTML) ()
QA1120: Describes the IODeviceTree plane in the Mac OS X IORegistry.
Music & Audio 2002-02-13
IOKit Framework Headers (HTML) ()
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
Music & Audio 2002-01-15
Is the Open Firmware device tree object oriented? (HTML)
HW80: Discusses the object-oriented attributes of the Open Firmware device tree.
Music & Audio 1999-11-15
Obtaining the name of an external MIDI Device from a MIDI Endpoint (HTML)
QA1374: Get the names of external MIDI Devices from MIDI Endpoints.
Music & Audio 2004-12-01
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
Music & Audio 2000-09-05
PCI Type 1 Cycles (HTML)
HW26: Describes the circumstances when the PowerMac generates a Configuration Type 1 command.
Music & Audio 1995-07-15
Retain Counts of io_object_t Objects in IOKit.framework (HTML) ()
QA1195: Distinguishes between the retain counts of an I/O Kit kernel object and its io_object_t user space proxy.
Music & Audio 2002-09-04
Sample code for allocating an amount of dictionary space (HTML)
HW71: Discusses the allocation and the setting of memory for Dictionary space in Open Firmware.
Music & Audio 1999-10-11
What are configuration variables in Open Firmware? (HTML) ()
HW38: Defines the configuration variables in Open Firmware.
Music & Audio 1999-02-15
What is the "dump" word and how do I use it? (HTML)
HW68: Describes the function of the Open Firmware word "dump" and how it can be used.
Music & Audio 1999-10-11
What numeric base is the default for the Open Firmware user interface? (HTML)
HW65: Describes how the default numeric base used by the Open Firmware user interface is hexadecimal.
Music & Audio 1999-10-11
Why did the name of the PCI bridge change? (HTML) ()
HW59: Explains the name change of the PCI bridge to the generic name "pci" in Open Firmware.
Music & Audio 1999-03-29
Adding dependencies with kmodload (HTML)
QA1097: Illustrates how to specify dependencies when using kmodload.
Networking 2001-12-05
Are interrupts enabled while Open Firmware is running? (HTML) ()
HW44: Explains that interrupts are disabled when Open Firmware is running.
Networking 1999-02-15
Changing the TCP Window Size (HTML)
NW47: Describes how to change the TCP window size in Open Transport.
Networking 1997-03-14
The "chosen" node in the device tree (HTML)
HW88: Describes how to find the "chosen" node in the Open firmware device tree.
Networking 2000-09-05
Determining Open Firmware configuration variables (HTML) ()
HW56: Discusses how to determine the Open Firmware variables on a system.
Networking 1999-03-29
Discovering all advertised Rendezvous service types (HTML)
QA1337: Explains how to discover all Rendezvous service types being advertised on the local network.
Networking 2004-06-01
The dreaded "incompatible flag -framework" error (HTML)
QA1096: Explains how to eliminate the incompatible flag -framework error in Project Builder.
Networking 2001-12-05
Expansion ROM device properties (HTML) ()
HW50: Describes the Open Firmware properties that should be included in a boot device's expansion ROM.
Networking 1999-03-29
Generating an NMI Without a Programmer's Switch (HTML) ()
QA1264: Explains how to generate a non-maskable interrupt (NMI) on CPUs without programmer's switches.
Networking 2004-04-26
Getting a Packet Trace (HTML) ()
QA1176: Lists tools available for looking at the network packets on the wire.
Networking 2004-07-13
Getting started with Forth (HTML) ()
HW53: Describes where FCode driver developers can get information about the Forth programming language.
Networking 1999-03-29
Installing an I/O Kit KEXT Without Rebooting (HTML)
QA1319: Describes the state of the art of installing I/O Kit kernel extensions (KEXTs) without requiring a restart.
Networking 2003-10-28
IODeviceTree & the IORegistry (HTML) ()
QA1120: Describes the IODeviceTree plane in the Mac OS X IORegistry.
Networking 2002-02-13
IOKit Framework Headers (HTML) ()
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
Networking 2002-01-15
Is the Open Firmware device tree object oriented? (HTML)
HW80: Discusses the object-oriented attributes of the Open Firmware device tree.
Networking 1999-11-15
Issues with boot time KEXT loading (HTML) ()
QA1087: Explains how to solve problems with loading KEXTs at boot time.
Networking 2004-01-15
Making sense of IOKit error codes (HTML) ()
QA1075: Explains how to interpret I/O Kit error codes.
Networking 2002-02-07
OTScheduleDeferredTask When Task Running (HTML) ()
NW52: Describes what happens when you use OTScheduleDefferedTask to schedule a task that is running.
Networking 1997-10-13
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
Networking 2000-09-05
PCI Type 1 Cycles (HTML)
HW26: Describes the circumstances when the PowerMac generates a Configuration Type 1 command.
Networking 1995-07-15
Registering a Rendezvous service multiple times (HTML)
QA1311: Explains why registering the same Rendezvous service twice on the same machine doesn't cause a name conflict.
Networking 2003-10-23
Rendezvous enforces the service type format in Panther (HTML)
QA1198: Explains why registering a Rendezvous service might fail on Panther.
Networking 2004-03-23
Sample code for allocating an amount of dictionary space (HTML)
HW71: Discusses the allocation and the setting of memory for Dictionary space in Open Firmware.
Networking 1999-10-11
The state of mDNSResponder (HTML)
QA1339: Explains how to obtain information regarding the internal state of mDNSResponder.
Networking 2004-02-06
T_DATA_REQ vs M_DATA TPI Message Blocks (HTML) ()
NW42: Explains why OT passes data to a TPI module using M_DATA message blocks instead of M_PROTO+T_DATA_REQ.
Networking 1996-10-25
TCP/IP Option Sizes (HTML) ()
NW62: Enumerates the TCP/IP options and their sizes for Open Transport.
Networking 1999-04-26
What are configuration variables in Open Firmware? (HTML) ()
HW38: Defines the configuration variables in Open Firmware.
Networking 1999-02-15
What are snag keys in Open Firmware? (HTML) ()
HW35: Explains Open Firmware snag keys, including examples of their function.
Networking 1999-02-15
What is the "dump" word and how do I use it? (HTML)
HW68: Describes the function of the Open Firmware word "dump" and how it can be used.
Networking 1999-10-11
What numeric base is the default for the Open Firmware user interface? (HTML)
HW65: Describes how the default numeric base used by the Open Firmware user interface is hexadecimal.
Networking 1999-10-11
Why did the name of the PCI bridge change? (HTML) ()
HW59: Explains the name change of the PCI bridge to the generic name "pci" in Open Firmware.
Networking 1999-03-29
The "/aliases" node in the device tree (HTML)
HW89: Describes the aliases node in the Open Firmware device tree.
Open Firmware 2000-09-05
The AAPL, slot-name property and PCI (HTML) ()
HW61: Discusses the use of the AAPL,slot name property for PCI
Open Firmware 1999-04-19
ANSI SCSI Standards (HTML)
Deprecated - DV03: Describes past Macintosh systems that did not fully support the ANSI SCSI-1 standard.
Open Firmware 1995-07-01
Are the Name Registry device tree nodes unique? (HTML)
Deprecated - HW64: Discusses whether Name Registry nodes copied from the Open Firmware device tree are unique.
Open Firmware 1999-10-11
Can you explain the words "begin" and "again"? (HTML)
HW70: Explains the Forth looping words "begin" and "again" and how to escape such a loop.
Open Firmware 1999-10-11
Changing the configuration variable in Open Firmware (HTML) ()
HW40: Tells how to change the configuration variable in Open Firmware.
Open Firmware 1999-02-15
Converting a numeric string to a number under Forth (HTML) ()
HW52: Demonstrates numeric string conversion in Forth.
Open Firmware 1999-03-29
DDR SDRAM ICs for PowerBooks and iBooks that use Memory bus slewing (HTML)
QA1344: Specifies DDR SDRAM IC optimization for PowerBooks and iBooks that use Memory bus slewing.
Open Firmware 2004-03-18
Determining Open Firmware version (HTML)
HW100: Demonstrates how to find out the version of Open Firmware on your Macintosh.
Open Firmware 2000-10-06
Difference between an Open Firmware word and method (HTML) ()
HW46: Describes the differences between an Open Firmware word and an Open Firmware method.
Open Firmware 1999-02-15
Disabling a Processor on a Multiprocessor System (HTML) ()
QA1141: Describes how to disable a processor on a multiprocessor system for testing purposes.
Open Firmware 2002-05-22
FCode & OS X (HTML) ()
QA1106: Provides useful tips for Open Firmware debugging on on machines introduced in 2001 or later.
Open Firmware 2002-01-15
IODeviceTree & the IORegistry (HTML) ()
QA1120: Describes the IODeviceTree plane in the Mac OS X IORegistry.
Open Firmware 2002-02-13
Locating the 1275-1994 Standard Document (HTML)
HW85: Alerts that the Open Firmware (IEEE 1275-1994) document can't be found at the IEEE Standards Association site.
Open Firmware 2000-07-17